home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_11_06 / 1106130a < prev    next >
Text File  |  1993-02-26  |  885b  |  39 lines

  1. /* cp.c:    Copy files */
  2.  
  3. #include <stdio.h>
  4. #include <sys/types.h>
  5. #include <sys/stat.h>
  6. #include <assert.h>
  7.  
  8. extern int filecopy(char *, char *);
  9. static void cp(char *, char *);
  10.  
  11. main(int argc, char **argv)
  12. {
  13.     int i;
  14.     struct stat finfo;
  15.     char *target = argv[argc-1];
  16.  
  17.     /* Make sure target is a directory */
  18.     assert(argc >= 3);
  19.     assert(stat(target,&finfo) == 0 &&
  20.            (finfo.st_mode & S_IFDIR));
  21.  
  22.     /* Copy files */
  23.     for (i = 1; i < argc-1; ++i)
  24.         cp(argv[i],target);
  25.     return 0;
  26. }
  27.  
  28. static void cp(char *file, char *target)
  29. {
  30.     static char newfile[FILENAME_MAX];
  31.  
  32.     /* Combine target and source file for a full pathname */
  33.     sprintf(newfile,"%s/%s",target,file);
  34.     fprintf(stderr,"copying %s to %s\n",file,newfile);
  35.     if (filecopy(file,newfile) != 0)
  36.         fputs("cp: Copy failed\n",stderr);
  37. }
  38.  
  39.